package com.dc.project.service;

import com.dc.project.entity.bo.TaskBo;
import com.dc.project.entity.map.TaskMapVo;
import com.dc.project.entity.po.Task;
import com.dc.project.entity.query.TaskQuery;
import com.dc.project.entity.vo.TaskVo;
import com.own.component.common.base.service.BaseService;

import java.util.List;

/**
 * TaskService
 *
 * @author chenxueli
 * @date 2025-03-08 15:11:52
 */
public interface TaskService extends BaseService<
        Task,
        TaskBo,
        TaskVo,
        TaskMapVo,
        TaskQuery
        > {

    /**
     * 根据任务id修改任务名称
     *
     * @param id    任务id
     * @param title 任务名称
     */
    void updateTitle(Long id, String title);

    /**
     * 根据文件列表创建任务
     *
     * @param companyName 企业名称
     * @param fileIdList 文件ID列表
     * @return 任务信息
     */
    TaskVo createByFileList(String companyName, List<Long> fileIdList);

    /**
     * 根据模板key创建
     *
     * @param companyName 企业名称
     * @param realmName   领域名称
     * @param templateKey 模板key
     * @return 任务信息
     */
    TaskVo createByTemplateKey(String companyName, String realmName, String templateKey);

    /**
     * 根据任务id切换热门
     *
     * @param taskId 任务id
     */
    void changeHot(Long taskId);

    /**
     * 根据任务id修改领域名称
     *
     * @param taskId    任务id
     * @param realmName 领域名称
     */
    void updateRealmName(Long taskId, String realmName);

    /**
     * 修改任务密码
     *
     * @param taskId      任务id
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     */
    void updatePassword(Long taskId, String oldPassword, String newPassword);

    /**
     * 清除任务密码
     *
     * @param taskId   任务id
     * @param password 访问密码
     */
    void clearPassword(Long taskId, String password);

    /**
     * 根据任务id修改任务提示词
     *
     * @param taskId  任务id
     * @param content 任务提示词
     */
    void updatePromptByTaskId(Long taskId, String content);

}

